package org.batatasframework.support.database.sql.field;

import java.util.List;

import org.batatasframework.support.database.ValueHoldable;
import org.batatasframework.support.database.metadatas.FieldMetadata;
import org.batatasframework.support.database.spi.FieldGroupable;


/**
 * <font color='blue'>在具体生成查询语句的时候生成</font>
 * 
 * <pre>
 * 定义可以被查询的字段，这个可被查询的字段包括：
 * 1. 主表的字段
 * 2. 指标表的指标项
 * 3. 临时表的字段
 * 
 * 其中，指标表的指标项会生成子查询，把指标表和主表关联起来，并且带有指标的定义信息；
 * 临时表的字段则是由前面两点生成出来的，所以临时表的指标项则可以指向前两个，也可以由另一个表与临时表进行关联查询的字段。
 * 
 * 问题，如果在指向多个指标库表的时候，生成联合查询的查询语句时，如果把指标表当作参数传给指标
 * 
 * <font color='red'>显示的字段以后可能需要增加排序的功能，界面可以自定义字段的顺序</font>
 * </pre>
 * 
 * <pre>
 * 指定为查询结果字段后，这个字段也可以成为临时表的一个字段
 * </pre>
 * 
 * 注意：这里不再需要进行排序，而是根据解释到的自然的顺序；这样就可以支持界面自定义排序的显示
 * @author jackson
 *
 */
public interface SelectFragment extends FieldGroupable, ValueHoldable{
	
	void readSource(List<FieldMetadata> fields);
	
	String getTitle();

	FieldMetadata find(String name);
}
